﻿Imports System.Windows.Forms
Imports DNP.GestionComercial.BE
Imports DNP.GestionComercial.BL
Imports DNP.GestionComercial.Util
Imports DNP.GestionComercial.FormBase
Public Class frmMantEmpleados
    Inherits frmFormBase
#Region "declaracion de variables"
    'Dim _strAccion As String = ""
    'Const _Update As String = "UPDATE"
    'Const _Insert As String = "INSERT"
    Dim oMsg As New sisMensaje
#End Region
#Region "Iniciar Pagina"
    Public Sub New()

        ' Llamada necesaria para el diseñador.
        InitializeComponent()
        lblTitulo.Text = "Mantenimiento de Empleados"
        Me.tbpLista.Text = "Lista de Empleados"
        inicializarControles()

        Listar()
        'LlenaDetalle(0)

        ' Agregue cualquier inicialización después de la llamada a InitializeComponent().

    End Sub

    Private Sub inicializarcontroles()
        Dim obeRespuesta As New RespuestaBE
        Dim lstParametrica As New List(Of ParametricaBE)
        Dim lstCargo As New List(Of ParametricaBE)
        Dim oblParametrica As New ParametricaBL
        txtCodigo.Enabled = False
        gbxEntidad.Visible = True
        txtEntidad.Visible = True
        txtEntidad.Enabled = True

        lblEntidad.Visible = True
        lblEntidad.Text = "Personal"

        'cargar tipos

        obeRespuesta = oblParametrica.listarParametricas(2)

        If obeRespuesta.Respuesta Then
            lstCargo = CType(obeRespuesta.ValorRertono, List(Of ParametricaBE))
            sisFunciones.Load_Combo(cmbCargo, lstCargo, "NPAR_CODIGO", "CPAR_VALOR", False, 0)
        Else
            oMsg.showMsgWarning(obeRespuesta.Mensaje)

        End If
        ' cargar tipo de documento

        obeRespuesta = oblParametrica.listarParametricas(1)

        If obeRespuesta.Respuesta Then
            lstParametrica = CType(obeRespuesta.ValorRertono, List(Of ParametricaBE))
            sisFunciones.Load_Combo(cmbTipoDoc, lstParametrica, "NPAR_CODIGO", "CPAR_VALOR", False, 0)
        Else
            oMsg.showMsgWarning(obeRespuesta.Mensaje)

        End If

        ' cargar ubigeo
        Dim oblUbigeo As New UbigeoBL
        Dim lstDepartamentos As New List(Of UbigeoBE)
        sisFunciones.Carga_ComboFromEnum(cmbEstado, GetType(sisEnum.EstadoBD))


        obeRespuesta = oblUbigeo.ObtenerDepartamentos()

        If obeRespuesta.Respuesta Then
            lstDepartamentos = CType(obeRespuesta.ValorRertono, List(Of UbigeoBE))
            sisFunciones.Load_Combo(cmbDepartamento, lstDepartamentos, "UGEO_DEPARTAMENTO", "UGEO_NOMBRE", False, "00")
        Else
            oMsg.showMsgWarning(obeRespuesta.Mensaje)

        End If

    End Sub

#End Region
#Region "Funciones"
    Private Sub FormatGrid()

        grdLista.AutoGenerateColumns = False
        grdLista.Columns.Clear()
        grdLista.Columns.Add("NEMP_CODIGO", "Código")
        grdLista.Columns.Add("DES_DOCUMENTO", "Documento")
        grdLista.Columns.Add("CEMP_DOCUMENTO", "Nro Documento")
        grdLista.Columns.Add("CEMP_NOMBRE", "Nombre")
        grdLista.Columns.Add("CEMP_APELLIDO", "Apellido")
        grdLista.Columns.Add("DES_CARGO", "Cargo")





        grdLista.Columns(0).DataPropertyName = "NEMP_CODIGO"
        grdLista.Columns(1).DataPropertyName = "DES_DOCUMENTO"
        grdLista.Columns(2).DataPropertyName = "CEMP_DOCUMENTO"
        grdLista.Columns(3).DataPropertyName = "CEMP_NOMBRE"
        grdLista.Columns(4).DataPropertyName = "CEMP_APELLIDO"
        grdLista.Columns(5).DataPropertyName = "DES_CARGO"


        grdLista.Columns(0).Width = 60
        grdLista.Columns(1).Width = 60
        grdLista.Columns(2).Width = 100
        grdLista.Columns(3).Width = 160
        grdLista.Columns(4).Width = 250
        grdLista.Columns(5).Width = 160



        grdLista.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        grdLista.Columns(0).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter

        grdLista.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        grdLista.Columns(1).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter

        grdLista.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        grdLista.Columns(2).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter

        grdLista.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        grdLista.Columns(3).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
        grdLista.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        grdLista.Columns(4).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
        grdLista.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        grdLista.Columns(5).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter


    End Sub
    Private Sub LimpiarControles()
        limpiarControlesForm(Me)
        'txtApellido.Clear()
        'txtCelular.Clear()
        'txtCodigo.Clear()
        'txtEmail1.Clear()
        'txtEmail2.Clear()
        'txtNombre.Clear()
        'txtNroDoc.Clear()
        'txtTelefono.Clear()
        'txtDireccion.Clear()
        'cmbDepartamento.SelectedValue = "00"
        'cmbProvincia.SelectedValue = "00"
        'cmbDistrito.SelectedValue = "00"
        'cmbCargo.SelectedValue = 0
        'cmbTipoDoc.SelectedValue = 0


    End Sub
#End Region
#Region "Accion Botones"
    Protected Overrides Sub tsbSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.Close()
    End Sub
    Protected Overrides Sub tsbListar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Listar()

    End Sub
    Protected Overrides Sub tsbNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

        LimpiarControles()
        cmbCargo.Focus()
        tbcMantenimiento.SelectedIndex = 1
        cmbEstado.SelectedIndex = 1
        tsbGuardar.Visible = True
    End Sub
    Protected Overrides Sub tsbGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        If validar() Then
            If oMsg.showMsgQuestion("msgQuestionGuardar") = DialogResult.Yes Then
                Guardar()
            End If

        End If

    End Sub
    Protected Overrides Sub grdLista_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        LlenaDetalle(0)
    End Sub
    Protected Overrides Sub tsbAbrir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub
    Protected Overrides Sub tsbEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

        Dim intFila
        If grdLista.RowCount = 0 Then
            Return
        End If
        Try
            If grdLista.Rows(0).Cells(0).Value.ToString().Trim() Is Nothing Or _
                grdLista.Rows(0).Cells(0).Value.ToString().Trim() = "0" Then
                Return
            End If
        Catch ex As Exception
            Return
        End Try
        intFila = grdLista.CurrentRow.Index
        If intFila <> -1 Then
            If grdLista.Rows(intFila).Selected Then
                Dim codigo As Integer = CType(grdLista.Rows(intFila).Cells(0).Value.ToString().Trim(), Integer)

                If (oMsg.showMsgQuestion("msgQuestionDelete") = DialogResult.Yes) Then
                    Eliminar(codigo)
                End If
            End If
        End If

    End Sub

#End Region
#Region "Operaciones"
    Private Sub Listar()

        Dim oberespuesta As New RespuestaBE
        Dim olstEntidad As New List(Of EmpleadoBE)
        Dim obeParametro As New PARAMETROBE
        obeParametro.PARAMETRO01 = txtEntidad.Text
        oberespuesta = New EmpleadoBL().ListarTodos(obeParametro)
        If oberespuesta.Respuesta Then
            FormatGrid()
            grdLista.DataSource = oberespuesta.ValorRertono 'olstEntidad
            grdLista.Refresh()
        Else
            oMsg.showMsgWarning(oberespuesta.Mensaje)
            MsgBox(oberespuesta.Mensaje)
        End If





    End Sub
    Private Function validar() As Boolean
        Return True

    End Function

    Private Sub Guardar()

        Dim obeEntidad As New EmpleadoBE

        'obeEntidad.CAUDI_USR_INS = "u60546"
        'obeEntidad.DAUDI_FEC_INS = Date.Now
        If Trim(txtCodigo.Text) = "" Then
            obeEntidad.NEMP_CODIGO = 0
        Else
            obeEntidad.NEMP_CODIGO = CInt(txtCodigo.Text)
        End If
        With obeEntidad
            .NEMP_TIPO = cmbCargo.SelectedValue
            .NEMP_TIPO_DOC = cmbTipoDoc.SelectedValue
            .CEMP_DOCUMENTO = txtNroDoc.Text
            .CEMP_NOMBRE = txtNombre.Text
            .CEMP_APELLIDO = txtApellido.Text
            .CEMP_TLFNO = txtTelefono.Text
            .CEMP_TLFNO_CEL = txtCelular.Text
            .CEMP_EMAIL_01 = txtEmail1.Text
            .CEMP_EMAIL_02 = txtEmail2.Text
            .CEMP_UBIGEO = cmbDepartamento.SelectedValue + cmbProvincia.SelectedValue + cmbDistrito.SelectedValue
            .CEMP_DIRECCION = txtDireccion.Text
            .CEMP_ESTADO = cmbEstado.SelectedValue
        End With
        If (objListaError.intNumError > 0) Then
            showError()
            objListaError.intNumError = 0
        Else

            Dim orespuesta As New RespuestaBE
            orespuesta = New EmpleadoBL().Guardar(obeEntidad, "U60546")
            If orespuesta.Respuesta Then
                txtCodigo.Text = orespuesta.Mensaje
                oMsg.showMsgInformation("msgExitoGuardar")
                Listar()
                tbcMantenimiento.SelectedIndex = 0
            Else
                oMsg.showMsgWarning("msgErrorGuardar")
            End If

        End If
    End Sub

    Private Sub Eliminar(ByVal pCodigo As Integer)
        Dim obeparametro As New PARAMETROBE
        Dim oberespuesta As New RespuestaBE
        obeparametro.PARAMETRO01 = pCodigo
        obeparametro.PARAMETRO02 = "U60546"
        oberespuesta = New EmpleadoBL().Eliminar(obeparametro, "u60546")
        If oberespuesta.Respuesta Then
            txtCodigo.Text = oberespuesta.Mensaje
            oMsg.showMsgInformation("msgExitoEliminar")
            Listar()
            tbcMantenimiento.SelectedIndex = 0
        Else
            oMsg.showMsgWarning("msgErrorEliminar")
        End If



    End Sub
    Private Sub LlenaDetalle(ByVal intTab As Integer)
        LimpiarControles()
        Dim intFila As Integer = -1
        If grdLista.RowCount = 0 Then
            Return
        End If
        intFila = grdLista.CurrentRow.Index
        If intFila <> -1 Then
            If grdLista.Rows(intFila).Selected Then
                '_strAccion = _Update
                If intTab >= 0 Then
                    tbcMantenimiento.SelectedIndex = intTab
                    txtCodigo.Text = grdLista.Rows(intFila).Cells(0).Value.ToString().Trim()
                    obtenerdatos(txtCodigo.Text)
                    tsbGuardar.Visible = True

                End If

            End If
        End If
    End Sub
    Private Sub obtenerdatos(ByVal codigo As String)
        If codigo <> "0" Then
            Dim oberespuesta As New RespuestaBE
            Dim obeEntidad As New EmpleadoBE
            oberespuesta = New EmpleadoBL().Obtener(codigo)
            If oberespuesta.Respuesta Then
                obeEntidad = CType(oberespuesta.ValorRertono, EmpleadoBE)
                txtApellido.Text = obeEntidad.CEMP_APELLIDO
                txtCelular.Text = obeEntidad.CEMP_TLFNO_CEL
                txtCodigo.Text = obeEntidad.NEMP_CODIGO
                txtEmail1.Text = obeEntidad.CEMP_EMAIL_01
                txtEmail2.Text = obeEntidad.CEMP_EMAIL_02
                txtNombre.Text = obeEntidad.CEMP_NOMBRE
                txtNroDoc.Text = obeEntidad.CEMP_DOCUMENTO
                txtTelefono.Text = obeEntidad.CEMP_TLFNO
                cmbCargo.SelectedValue = CInt(obeEntidad.NEMP_TIPO)
                cmbTipoDoc.SelectedValue = obeEntidad.NEMP_TIPO_DOC
                If txtCodigo.Text = "" Or txtCodigo.Text = "0" Then
                    txtNroDoc.Enabled = True
                    cmbTipoDoc.Enabled = True
                Else
                    txtNroDoc.Enabled = False
                    cmbTipoDoc.Enabled = False
                End If
                txtDireccion.Text = obeEntidad.CEMP_DIRECCION

                Try
                    cmbDepartamento.SelectedValue = obeEntidad.CEMP_UBIGEO.Substring(0, 2)
                Catch ex As Exception
                    cmbDepartamento.SelectedValue = "00"
                End Try
                Try
                    cmbProvincia.SelectedValue = obeEntidad.CEMP_UBIGEO.Substring(2, 2)
                Catch ex As Exception
                    cmbProvincia.SelectedValue = "00"
                End Try
                Try
                    cmbDistrito.SelectedValue = obeEntidad.CEMP_UBIGEO.Substring(4, 2)
                Catch ex As Exception
                    cmbDistrito.SelectedValue = "00"
                End Try

                cmbEstado.SelectedValue = obeEntidad.CEMP_ESTADO
            End If
        End If


    End Sub



#End Region
#Region "Evento Controles"
    Private Sub cmbDepartamento_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbDepartamento.SelectedIndexChanged
        If cmbDepartamento.SelectedIndex >= 0 And Not cmbDepartamento.SelectedValue Is Nothing Then
            Dim obeRespuesta As New RespuestaBE
            Dim lstUbigeo As New List(Of UbigeoBE)
            Dim oblUbigeo As New UbigeoBL
            Dim dpto As String = DirectCast(cmbDepartamento.SelectedItem, UbigeoBE).UGEO_DEPARTAMENTO
            obeRespuesta = oblUbigeo.ObtenerProvincia(dpto)

            If obeRespuesta.Respuesta Then
                lstUbigeo = CType(obeRespuesta.ValorRertono, List(Of UbigeoBE))
                sisFunciones.Load_Combo(cmbProvincia, lstUbigeo, "UGEO_PROVINCIA", "UGEO_NOMBRE", False, "00")
            Else
                oMsg.showMsgWarning(obeRespuesta.Mensaje)

            End If
        Else
            cmbProvincia.SelectedValue = "00"
        End If

    End Sub

    Private Sub cmbProvincia_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbProvincia.SelectedIndexChanged
        If cmbProvincia.SelectedIndex >= 0 And Not cmbDepartamento.SelectedValue Is Nothing Then
            Dim obeRespuesta As New RespuestaBE
            Dim lstUbigeo As New List(Of UbigeoBE)
            Dim oblUbigeo As New UbigeoBL
            Dim dpto As String = DirectCast(cmbDepartamento.SelectedItem, UbigeoBE).UGEO_DEPARTAMENTO
            Dim prov As String = DirectCast(cmbProvincia.SelectedItem, UbigeoBE).UGEO_PROVINCIA
            obeRespuesta = oblUbigeo.ObtenerDistrito(dpto, prov)

            If obeRespuesta.Respuesta Then
                lstUbigeo = CType(obeRespuesta.ValorRertono, List(Of UbigeoBE))
                sisFunciones.Load_Combo(cmbDistrito, lstUbigeo, "UGEO_DISTRITO", "UGEO_NOMBRE", False, "00")
            Else
                oMsg.showMsgWarning(obeRespuesta.Mensaje)

            End If
        End If
    End Sub

#End Region

 
End Class